Client applications in the IPv6 world that want remote users to be able to connect to them need to decide what IP addresses to publish to the world. Given bandwidth constraints and constraints of some name resolution protocols (such as Peer Name Resolution Protocol), the application must limit the number of addresses to a subset of all possible addresses. This creates the need for an application to decide which subset to advertise. Furthermore, in the future, many computers will have access to firewall traversal technology, which introduces a new type of IPv6 address which is incompatible with other addresses. This further complicates the issue of address selection.
Algorithms exist today that can sort a list of addresses for a machine in the order in which to attempt to connect to them to ensure that the connectivity used is optimal in terms of interface preference and routing efficiency at the expense of often requiring attempting to connect to numerous addresses in the list before finding one for which the connection attempt succeeds. While that is often acceptable for point-to-point applications, distributed or P2P systems that wish to use IPv6 often need to connect to many different machines only once. That makes the prioritization different, requiring a prioritization of success on the first address to optimal routing or interface choice.